<?php

namespace App\Http\Controllers;

class PaymentNotifyController extends Controller
{
    // 服务器端回调
    public function alipayNotify()
    {
        return $this->payNotifyHandle('alipay');
    }

    public function wechatNotify()
    {
        return $this->payNotifyHandle('wechat_pay');
    }

    private function payNotifyHandle($type)
    {
        // 验签
        $res = app($type)->verify();
\Log::debug($type . ' notify', $res->all());

        // TODO: 验签后的相关逻辑
        // 请自行对 trade_status 进行判断及其它逻辑进行判断，在支付宝的业务通知中，只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时，支付宝才会认定为买家付款成功。
        // 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号；
        // 2、判断total_amount是否确实为该订单的实际金额（即商户订单创建时的金额）；
        // 3、校验通知中的seller_id（或者seller_email) 是否为out_trade_no这笔单据的对应的操作方（有的时候，一个商户可能有多个seller_id/seller_email）；
        // 4、验证app_id是否为该商户本身。
        // 5、其它业务逻辑情况

        // if ($type == 'alipay' && !in_array($res->trade_status, ['TRADE_SUCCESS', 'TRADE_FINISHED'])) return fail;
        // $order = 通过 $res->out_trade_no 获取订单;
        // if (订单不存在) return 'fail';
        // if (订单已支付) return app($type)->success();
        // 其他相关逻辑。。
        // return app($type)->success();
    }

}
